package IO.ByteStream;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
 *
 *    JDK7:IO流中捕获异常的写法
 *
 *      try后面的小括号中写创建对象的代码，
 *          注意：只有实现了AutoCloseable接口的类，才能在小括号中创建对象。
 *     try(){
 *
 *     }catch(){
 *
 *     }
 *
 * */
public class demo8 {
    public static void main(String[] args) throws IOException {
        /*
        练习：
         public int read(byte[] buffer)      一次读一个字节数组数据
               文件拷贝：
               将 D:\tep\二维码文件下的0001.jpg拷贝到当前模块下。
               课堂练习：
        *       要求统计一下拷贝时间，单位毫秒
         */
        //拷贝
        //核心思想：边读边写
        long start = System.currentTimeMillis();

        try {
            FileInputStream fis = new FileInputStream("D:\\BaiduNetdiskDownload\\01、Java基础入门.pptx");
            FileOutputStream fos = new FileOutputStream("./test/copy3.pptx");
            int len;
            byte[] bytes = new byte[1024 * 1024 * 5];
            //一次读取多少个字节跟数组的长度有关系
            //返回值:  本次读取了多少个字节数据
            while ((len = fis.read(bytes)) != -1) {
                fos.write(bytes,0,len);
                //bytes存储了读取的数据,是一个数组,len是本次读取了多少个字节,多少个跟数组长度有关
                //读到最后一个如果是奇数和数组每次读的数据长度不一致,就读剩下的最后一个
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
        long end = System.currentTimeMillis();
        System.out.println(end - start);
    }
}
